<?php namespace app\system\controller;


use houdunwang\request\Request;
use houdunwang\route\Controller;
use houdunwang\validate\Validate;
use system\model\Module as ModuleModel;
class Module extends Controller
{
    //动作
    public function index(ModuleModel $module)
    {
        //此处书写代码..
        $moduleData=$module->getAllModule();
        return view('',compact('moduleData'));
    }


    public  function  design(ModuleModel $module){
        if(IS_POST){
//            获取post数据
          $post=Request::post();
//            自动验证
            Validate::make([
                ['module_title','required','请输入模块名称',Validate::MUST_VALIDATE]
            ]);
            //2.判断不能重复创建模块
            //考虑规范，采用目录全部小写
            $post['module_name'] = strtolower($post['module_name']);
            //在addons或者module检测，创建的模块已存在，则不允许重复创建【目录已经存在，代表是模块已经存在】
            if(is_dir("addons/{$post['module_name']}") || is_dir("module/{$post['module_name']}")){
                return ['valid'=>0,'message'=>'模块已存在，不能重复创建'];
            }
            //3.创建出模块的基本目录结构
            $dirs = [
                'controller','model','system','template',
            ];
            foreach ($dirs as $dir) {
                //Dir::create（）在hdphp手册中组件--目录操作
                Dir::create("addons/{$post['module_name']}/{$dir}");
            }
            //4.生成文件
            $module_name = $post['module_name'];
            $content = <<<str
<?php namespace addons\\{$module_name}\system;

use module\Hdprocessor;

/**
 * 微信处理器
 * Class Processor
 * @package addons\\{$module_name}\system
 */
class Processor extends Hdprocessor
{
	public function handler()
	{

	}
}
str;
            file_put_contents("addons/{$post['module_name']}/system/Processor.php",$content);
            //5.数据存储到数据库
            $module->save($post);
            return ['valid'=>1,'message'=>'模块设计成功'];


        }

        return view();
    }
    //模块卸载
    public function del()
    {
        //接受要删除模块module_name[英文标识]
        $module_name = Request::get('module_name');
        //p($module_name);//pic
        //1.把该模块对应的目录删除
        Dir::del("addons/{$module_name}");
        //2.删除数据库对应数据
        ModuleModel::where('module_name',$module_name)->delete();
        //3.成功提示
        return $this->setRedirect('index')->success('操作成功');
    }
}
